Skip to content

Cleanup hr#1264

Merged
jfroy merged 1 commit into
mainfrom
cleanup-hr
May 15, 2026
Merged

Cleanup hr#1264
jfroy merged 1 commit into
mainfrom
cleanup-hr

Conversation

@jfroy
Copy link
Copy Markdown
Owner

@jfroy jfroy commented May 14, 2026

Summary by CodeRabbit

  • Chores
    • Standardized Helm release deployment configuration across Kubernetes manifests by centralizing drift detection and remediation settings via a cluster-wide patch system, removing redundant individual configurations from 100+ HelmRelease resources.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 14, 2026

Warning

Rate limit exceeded

@jfroy has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 48 minutes and 43 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: fe15984c-b889-4c83-b18b-8c8eb4a127f0

📥 Commits

Reviewing files that changed from the base of the PR and between 9cdf55f and ec2f9a5.

📒 Files selected for processing (119)
  • CLAUDE.md
  • kubernetes/apps/cert-manager/cert-manager/app/helmrelease.yaml
  • kubernetes/apps/cert-manager/trust-manager/app/helmrelease.yaml
  • kubernetes/apps/cnpg-system/cloudnative-pg/app/helmrelease.yaml
  • kubernetes/apps/database/influxdb/app/helmrelease.yaml
  • kubernetes/apps/default/autobrr/app/helmrelease.yaml
  • kubernetes/apps/default/buildkit/app/helmrelease.yaml
  • kubernetes/apps/default/changedetection/app/helmrelease.yaml
  • kubernetes/apps/default/crd-schema-publisher/app/helmrelease.yaml
  • kubernetes/apps/default/dawarich/app/helmrelease.yaml
  • kubernetes/apps/default/docker-registry-ui/app/helmrelease.yaml
  • kubernetes/apps/default/docling/app/helmrelease.yaml
  • kubernetes/apps/default/glance/app/helmrelease.yaml
  • kubernetes/apps/default/gluetun/app/helmrelease.yaml
  • kubernetes/apps/default/grimmory/app/helmrelease.yaml
  • kubernetes/apps/default/homebox/app/helmrelease.yaml
  • kubernetes/apps/default/homepage/app/helmrelease.yaml
  • kubernetes/apps/default/hypermind/app/helmrelease.yaml
  • kubernetes/apps/default/immich/app/helmrelease.yaml
  • kubernetes/apps/default/immich/frame/helmrelease.yaml
  • kubernetes/apps/default/immich/valkey/helmrelease.yaml
  • kubernetes/apps/default/jellyfin/app/helmrelease.yaml
  • kubernetes/apps/default/karakeep/app/helmrelease.yaml
  • kubernetes/apps/default/komga/app/helmrelease.yaml
  • kubernetes/apps/default/mealie/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/metadata-relay/helmrelease.yaml
  • kubernetes/apps/default/memos/app/helmrelease.yaml
  • kubernetes/apps/default/miniflux/app/helmrelease.yaml
  • kubernetes/apps/default/nextflux/app/helmrelease.yaml
  • kubernetes/apps/default/octoeverywhere-bambu-connect/app/helmrelease.yaml
  • kubernetes/apps/default/ollama/app/helmrelease.yaml
  • kubernetes/apps/default/open-webui/app/helmrelease.yaml
  • kubernetes/apps/default/openspoolman/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/ai/helmrelease.yaml
  • kubernetes/apps/default/paperless/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/gpt/helmrelease.yaml
  • kubernetes/apps/default/pgadmin/app/helmrelease.yaml
  • kubernetes/apps/default/photon/app/helmrelease.yaml
  • kubernetes/apps/default/plex/app/helmrelease.yaml
  • kubernetes/apps/default/pocket-id/app/helmrelease.yaml
  • kubernetes/apps/default/prowlarr/app/helmrelease.yaml
  • kubernetes/apps/default/pvforecast/app/helmrelease.yaml
  • kubernetes/apps/default/qbittorrent/app/helmrelease.yaml
  • kubernetes/apps/default/qui/app/helmrelease.yaml
  • kubernetes/apps/default/radarr/app/helmrelease.yaml
  • kubernetes/apps/default/recyclarr/app/helmrelease.yaml
  • kubernetes/apps/default/registry/app/helmrelease.yaml
  • kubernetes/apps/default/sabnzbd/app/helmrelease.yaml
  • kubernetes/apps/default/seerr/app/helmrelease.yaml
  • kubernetes/apps/default/shelfmark/app/helmrelease.yaml
  • kubernetes/apps/default/sonarr/app/helmrelease.yaml
  • kubernetes/apps/default/spoolman/app/helmrelease.yaml
  • kubernetes/apps/default/stash/app/helmrelease.yaml
  • kubernetes/apps/default/tracearr/app/helmrelease.yaml
  • kubernetes/apps/external-secrets/external-secrets/app/helmrelease.yaml
  • kubernetes/apps/flux-system/operator/ks/helmrelease.yaml
  • kubernetes/apps/gpu-operator/gpu-operator/app/helmrelease.yaml
  • kubernetes/apps/keep-system/keep/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cilium/app/helmrelease.yaml
  • kubernetes/apps/kube-system/coredns/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cpufreq/kantai1/helmrelease.yaml
  • kubernetes/apps/kube-system/csi-driver-smb/app/helmrelease.yaml
  • kubernetes/apps/kube-system/descheduler/app/helmrelease.yaml
  • kubernetes/apps/kube-system/generic-device-plugin/app/helmrelease.yaml
  • kubernetes/apps/kube-system/kubelet-csr-approver/app/helmrelease.yaml
  • kubernetes/apps/kube-system/metrics-server/app/helmrelease.yaml
  • kubernetes/apps/kube-system/multus/app/helmrelease.yaml
  • kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml
  • kubernetes/apps/kube-system/reloader/app/helmrelease.yaml
  • kubernetes/apps/kube-system/snapshot-controller/app/helmrelease.yaml
  • kubernetes/apps/kube-system/spegel/app/helmrelease.yaml
  • kubernetes/apps/kube-system/zfs-static-csi/app/helmrelease.yaml
  • kubernetes/apps/network/cloudflared/app/helmrelease.yaml
  • kubernetes/apps/network/echo/app/helmrelease.yaml
  • kubernetes/apps/network/envoy-gateway/app/helmrelease.yaml
  • kubernetes/apps/network/external-dns/cloudflare/helmrelease.yaml
  • kubernetes/apps/network/external-dns/unifi/helmrelease.yaml
  • kubernetes/apps/network/k8s-gateway/tailscale-dns/helmrelease.yaml
  • kubernetes/apps/network/openspeedtest/app/helmrelease.yaml
  • kubernetes/apps/nvidia-dra-driver-gpu/nvidia-dra-driver-gpu/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/fluent-bit/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/node-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/zfs/helmrelease.yaml
  • kubernetes/apps/observability-agents/smartctl-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/powerwall/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/zfs/helmrelease.yaml
  • kubernetes/apps/observability/alloy/alloy/helmrelease.yaml
  • kubernetes/apps/observability/beszel/app/helmrelease.yaml
  • kubernetes/apps/observability/blackbox-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/dozzle/app/helmrelease.yaml
  • kubernetes/apps/observability/gatus/app/helmrelease.yaml
  • kubernetes/apps/observability/grafana/operator/helmrelease.yaml
  • kubernetes/apps/observability/headlamp/app/helmrelease.yaml
  • kubernetes/apps/observability/idrac-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/kite/app/helmrelease.yaml
  • kubernetes/apps/observability/kube-prometheus-stack/app/helmrelease.yaml
  • kubernetes/apps/observability/netronome/app/helmrelease.yaml
  • kubernetes/apps/observability/nut-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/prometheus-operator-crds/app/helmrelease.yaml
  • kubernetes/apps/observability/pulse/app/helmrelease.yaml
  • kubernetes/apps/observability/scrutiny/app/helmrelease.yaml
  • kubernetes/apps/observability/silence-operator/app/helmrelease.yaml
  • kubernetes/apps/observability/siren/app/helmrelease.yaml
  • kubernetes/apps/observability/speedtest-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/unpoller/app/helmrelease.yaml
  • kubernetes/apps/observability/victoria/operator-crds/helmrelease.yaml
  • kubernetes/apps/observability/victoria/operator/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/cluster/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/operator/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai1-samba/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai3-samba/app/helmrelease.yaml
  • kubernetes/apps/tailscale/tailscale-operator/app/helmrelease.yaml
  • kubernetes/apps/talos-admin/tuppr/app/helmrelease.yaml
  • kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml
  • kubernetes/cluster/ks.yaml
📝 Walkthrough

Walkthrough

This PR establishes a standardized Flux HelmRelease configuration system by introducing a global Kustomize patch that injects consistent remediation defaults cluster-wide, while allowing selective opt-out via labels and custom behavior for two exception HelmReleases.

Changes

Flux HelmRelease Configuration Standardization

Layer / File(s) Summary
Global HelmRelease defaults patch infrastructure
kubernetes/cluster/ks.yaml
A Kustomize patch is added to the cluster-apps Kustomization that injects HelmRelease remediation defaults (drift detection, CRD handling, cleanup on fail, RemediateOnFailure strategy with retries: 2) to all child Kustomizations except those labeled kantai.xyz/no-hr-defaults!=true. The retryInterval and timeout fields are removed from cluster-apps spec.
Custom remediation for exception HelmReleases
kubernetes/apps/observability/victoria/operator/helmrelease.yaml
victoria/operator and rook-ceph/cluster define custom driftDetection ignore rules and remediation configurations. victoria/operator retains VMServiceScrape annotation path ignore rule and configures RemediateOnFailure with retries: 2; rook-ceph/cluster enables rollback cleanup and RemediateOnFailure with remediateLastFailure and retries: 2. Both releases are marked to skip global defaults.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • jfroy/flatops#1247: Adds HelmRelease-level driftDetection and install/upgrade remediation to crd-schema-publisher, which contrasts with the systematic removal of these individual configurations in the main PR's favor of centralized defaults.

A rabbit hops through patches of config fate,
Where global defaults now mediate,
Labels carve exceptions true,
Flux standards renewed with new. 🐰

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cleanup-hr

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
kubernetes/apps/rook-ceph/cluster/app/helmrelease.yaml (1)

26-39: ⚡ Quick win

Opted-out HelmRelease contradicts coding guidelines.

This HelmRelease is explicitly opted out and has configuration that contradicts the coding guidelines:

  1. driftDetection.mode: disabled (line 27) - The guideline requires mode: enabled as standard boilerplate
  2. Missing install.remediation.retries: -1 - No install remediation is configured

The disabled drift detection may be intentional for Ceph cluster management (to avoid reconciliation on operational drift), but the coding guidelines specify these as standard boilerplate requirements.

As per coding guidelines: "Enable driftDetection.mode: enabled, install.remediation.retries: -1, and upgrade.cleanupOnFail: true as standard HelmRelease boilerplate"

📋 Suggested alignment with standard boilerplate
   driftDetection:
-    mode: disabled
+    mode: enabled
   install:
     disableWait: true
+    remediation:
+      retries: -1
   rollback:

Note: If drift detection must remain disabled for operational reasons, consider documenting the exception with a comment.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kubernetes/apps/rook-ceph/cluster/app/helmrelease.yaml` around lines 26 - 39,
The HelmRelease currently has driftDetection.mode set to disabled and lacks
install.remediation.retries, which contradicts the repository boilerplate;
change driftDetection.mode to enabled, add an install.remediation block with
retries: -1 (e.g., under install.remediation.retries) and ensure
upgrade.cleanupOnFail remains true (keep upgrade.cleanupOnFail: true) — if
disabling driftDetection is intentional, add an inline YAML comment explaining
the operational exception.
kubernetes/apps/observability/victoria/operator/helmrelease.yaml (1)

26-42: ⚡ Quick win

Opted-out HelmRelease still missing standard boilerplate from coding guidelines.

While this HelmRelease is explicitly opted out of global defaults (likely due to custom driftDetection.ignore rules and crds: Skip settings), it's still missing elements required by the coding guidelines:

  1. driftDetection.mode: enabled is not set - The guideline requires this as standard boilerplate, even though ignore rules are present
  2. install.remediation.retries: -1 is missing - No install remediation is configured

As per coding guidelines: "Enable driftDetection.mode: enabled, install.remediation.retries: -1, and upgrade.cleanupOnFail: true as standard HelmRelease boilerplate"

📋 Suggested alignment with standard boilerplate
   driftDetection:
+    mode: enabled
     ignore:
       - paths: ["/metadata/labels/app.kubernetes.io~1name"]
         target:
           kind: VMServiceScrape
   install:
     crds: Skip
+    remediation:
+      retries: -1
   rollback:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kubernetes/apps/observability/victoria/operator/helmrelease.yaml` around
lines 26 - 42, This HelmRelease is missing required standard boilerplate: set
driftDetection.mode to "enabled" under the existing driftDetection block, add an
install.remediation.retries entry with value -1 under the existing install block
(next to crds: Skip), and ensure upgrade.cleanupOnFail remains true (it already
is) — update the driftDetection, install.remediation.retries, and
upgrade.cleanupOnFail settings in the HelmRelease to match the coding
guidelines.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@kubernetes/apps/observability/victoria/operator/helmrelease.yaml`:
- Around line 26-42: This HelmRelease is missing required standard boilerplate:
set driftDetection.mode to "enabled" under the existing driftDetection block,
add an install.remediation.retries entry with value -1 under the existing
install block (next to crds: Skip), and ensure upgrade.cleanupOnFail remains
true (it already is) — update the driftDetection, install.remediation.retries,
and upgrade.cleanupOnFail settings in the HelmRelease to match the coding
guidelines.

In `@kubernetes/apps/rook-ceph/cluster/app/helmrelease.yaml`:
- Around line 26-39: The HelmRelease currently has driftDetection.mode set to
disabled and lacks install.remediation.retries, which contradicts the repository
boilerplate; change driftDetection.mode to enabled, add an install.remediation
block with retries: -1 (e.g., under install.remediation.retries) and ensure
upgrade.cleanupOnFail remains true (keep upgrade.cleanupOnFail: true) — if
disabling driftDetection is intentional, add an inline YAML comment explaining
the operational exception.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 64bda94a-d587-494e-8bc3-bbc8c754ebc9

📥 Commits

Reviewing files that changed from the base of the PR and between 551b918 and 5ff3c7b.

📒 Files selected for processing (122)
  • .renovate/groups.json5
  • kubernetes/apps/cert-manager/cert-manager/app/helmrelease.yaml
  • kubernetes/apps/cert-manager/trust-manager/app/helmrelease.yaml
  • kubernetes/apps/cnpg-system/cloudnative-pg/app/helmrelease.yaml
  • kubernetes/apps/database/influxdb/app/helmrelease.yaml
  • kubernetes/apps/default/autobrr/app/helmrelease.yaml
  • kubernetes/apps/default/buildkit/app/helmrelease.yaml
  • kubernetes/apps/default/changedetection/app/helmrelease.yaml
  • kubernetes/apps/default/crd-schema-publisher/app/helmrelease.yaml
  • kubernetes/apps/default/dawarich/app/helmrelease.yaml
  • kubernetes/apps/default/docker-registry-ui/app/helmrelease.yaml
  • kubernetes/apps/default/docling/app/helmrelease.yaml
  • kubernetes/apps/default/glance/app/helmrelease.yaml
  • kubernetes/apps/default/gluetun/app/helmrelease.yaml
  • kubernetes/apps/default/grimmory/app/helmrelease.yaml
  • kubernetes/apps/default/homebox/app/helmrelease.yaml
  • kubernetes/apps/default/homepage/app/helmrelease.yaml
  • kubernetes/apps/default/hypermind/app/helmrelease.yaml
  • kubernetes/apps/default/immich/app/helmrelease.yaml
  • kubernetes/apps/default/immich/frame/helmrelease.yaml
  • kubernetes/apps/default/immich/valkey/helmrelease.yaml
  • kubernetes/apps/default/jellyfin/app/helmrelease.yaml
  • kubernetes/apps/default/karakeep/app/helmrelease.yaml
  • kubernetes/apps/default/komga/app/helmrelease.yaml
  • kubernetes/apps/default/mealie/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/metadata-relay/helmrelease.yaml
  • kubernetes/apps/default/memos/app/helmrelease.yaml
  • kubernetes/apps/default/miniflux/app/helmrelease.yaml
  • kubernetes/apps/default/nextflux/app/helmrelease.yaml
  • kubernetes/apps/default/octoeverywhere-bambu-connect/app/helmrelease.yaml
  • kubernetes/apps/default/ollama/app/helmrelease.yaml
  • kubernetes/apps/default/open-webui/app/helmrelease.yaml
  • kubernetes/apps/default/openspoolman/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/ai/helmrelease.yaml
  • kubernetes/apps/default/paperless/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/gpt/helmrelease.yaml
  • kubernetes/apps/default/pgadmin/app/helmrelease.yaml
  • kubernetes/apps/default/photon/app/helmrelease.yaml
  • kubernetes/apps/default/plex/app/helmrelease.yaml
  • kubernetes/apps/default/pocket-id/app/helmrelease.yaml
  • kubernetes/apps/default/prowlarr/app/helmrelease.yaml
  • kubernetes/apps/default/pvforecast/app/helmrelease.yaml
  • kubernetes/apps/default/qbittorrent/app/helmrelease.yaml
  • kubernetes/apps/default/qui/app/helmrelease.yaml
  • kubernetes/apps/default/radarr/app/helmrelease.yaml
  • kubernetes/apps/default/recyclarr/app/helmrelease.yaml
  • kubernetes/apps/default/registry/app/helmrelease.yaml
  • kubernetes/apps/default/sabnzbd/app/helmrelease.yaml
  • kubernetes/apps/default/seerr/app/helmrelease.yaml
  • kubernetes/apps/default/shelfmark/app/helmrelease.yaml
  • kubernetes/apps/default/sonarr/app/helmrelease.yaml
  • kubernetes/apps/default/spoolman/app/helmrelease.yaml
  • kubernetes/apps/default/stash/app/helmrelease.yaml
  • kubernetes/apps/default/tracearr/app/helmrelease.yaml
  • kubernetes/apps/external-secrets/external-secrets/app/helmrelease.yaml
  • kubernetes/apps/flux-system/instance/ks/helm-values.yaml
  • kubernetes/apps/flux-system/operator/ks/helmrelease.yaml
  • kubernetes/apps/gpu-operator/gpu-operator/app/helmrelease.yaml
  • kubernetes/apps/keep-system/keep/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cilium/app/helmrelease.yaml
  • kubernetes/apps/kube-system/coredns/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cpufreq/kantai1/helmrelease.yaml
  • kubernetes/apps/kube-system/csi-driver-smb/app/helmrelease.yaml
  • kubernetes/apps/kube-system/descheduler/app/helmrelease.yaml
  • kubernetes/apps/kube-system/generic-device-plugin/app/helmrelease.yaml
  • kubernetes/apps/kube-system/kubelet-csr-approver/app/helmrelease.yaml
  • kubernetes/apps/kube-system/metrics-server/app/helmrelease.yaml
  • kubernetes/apps/kube-system/multus/app/helmrelease.yaml
  • kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml
  • kubernetes/apps/kube-system/reloader/app/helmrelease.yaml
  • kubernetes/apps/kube-system/snapshot-controller/app/helmrelease.yaml
  • kubernetes/apps/kube-system/spegel/app/helmrelease.yaml
  • kubernetes/apps/kube-system/zfs-static-csi/app/helmrelease.yaml
  • kubernetes/apps/network/cloudflared/app/helmrelease.yaml
  • kubernetes/apps/network/echo/app/helmrelease.yaml
  • kubernetes/apps/network/envoy-gateway/app/helmrelease.yaml
  • kubernetes/apps/network/external-dns/cloudflare/helmrelease.yaml
  • kubernetes/apps/network/external-dns/unifi/helmrelease.yaml
  • kubernetes/apps/network/k8s-gateway/tailscale-dns/helmrelease.yaml
  • kubernetes/apps/network/openspeedtest/app/helmrelease.yaml
  • kubernetes/apps/nvidia-dra-driver-gpu/nvidia-dra-driver-gpu/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/fluent-bit/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/node-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/zfs/helmrelease.yaml
  • kubernetes/apps/observability-agents/smartctl-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/powerwall/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/zfs/helmrelease.yaml
  • kubernetes/apps/observability/alloy/alloy/helmrelease.yaml
  • kubernetes/apps/observability/beszel/app/helmrelease.yaml
  • kubernetes/apps/observability/blackbox-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/dozzle/app/helmrelease.yaml
  • kubernetes/apps/observability/gatus/app/helmrelease.yaml
  • kubernetes/apps/observability/grafana/operator/helmrelease.yaml
  • kubernetes/apps/observability/headlamp/app/helmrelease.yaml
  • kubernetes/apps/observability/idrac-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/kite/app/helmrelease.yaml
  • kubernetes/apps/observability/kube-prometheus-stack/app/helmrelease.yaml
  • kubernetes/apps/observability/netronome/app/helmrelease.yaml
  • kubernetes/apps/observability/nut-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/prometheus-operator-crds/app/helmrelease.yaml
  • kubernetes/apps/observability/pulse/app/helmrelease.yaml
  • kubernetes/apps/observability/scrutiny/app/helmrelease.yaml
  • kubernetes/apps/observability/silence-operator/app/helmrelease.yaml
  • kubernetes/apps/observability/siren/app/helmrelease.yaml
  • kubernetes/apps/observability/speedtest-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/unpoller/app/helmrelease.yaml
  • kubernetes/apps/observability/victoria/ks.yaml
  • kubernetes/apps/observability/victoria/operator-crds/helmrelease.yaml
  • kubernetes/apps/observability/victoria/operator/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/cluster/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/cluster/ks.yaml
  • kubernetes/apps/rook-ceph/operator/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai1-samba/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai3-samba/app/helmrelease.yaml
  • kubernetes/apps/tailscale/tailscale-operator/app/helmrelease.yaml
  • kubernetes/apps/talos-admin/tuppr/app/helmrelease.yaml
  • kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml
  • kubernetes/cluster/ks.yaml
💤 Files with no reviewable changes (115)
  • kubernetes/apps/cnpg-system/cloudnative-pg/app/helmrelease.yaml
  • kubernetes/apps/gpu-operator/gpu-operator/app/helmrelease.yaml
  • kubernetes/apps/network/external-dns/cloudflare/helmrelease.yaml
  • kubernetes/apps/default/photon/app/helmrelease.yaml
  • kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml
  • kubernetes/apps/network/external-dns/unifi/helmrelease.yaml
  • kubernetes/apps/kube-system/descheduler/app/helmrelease.yaml
  • kubernetes/apps/observability/scrutiny/app/helmrelease.yaml
  • kubernetes/apps/network/openspeedtest/app/helmrelease.yaml
  • kubernetes/apps/kube-system/kubelet-csr-approver/app/helmrelease.yaml
  • kubernetes/apps/default/buildkit/app/helmrelease.yaml
  • kubernetes/apps/default/gluetun/app/helmrelease.yaml
  • kubernetes/apps/kube-system/generic-device-plugin/app/helmrelease.yaml
  • kubernetes/apps/cert-manager/trust-manager/app/helmrelease.yaml
  • kubernetes/apps/default/docling/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/zfs/helmrelease.yaml
  • kubernetes/apps/observability/nut-exporter/app/helmrelease.yaml
  • kubernetes/apps/default/crd-schema-publisher/app/helmrelease.yaml
  • kubernetes/apps/default/prowlarr/app/helmrelease.yaml
  • kubernetes/apps/default/nextflux/app/helmrelease.yaml
  • kubernetes/apps/default/octoeverywhere-bambu-connect/app/helmrelease.yaml
  • kubernetes/apps/database/influxdb/app/helmrelease.yaml
  • kubernetes/apps/observability/siren/app/helmrelease.yaml
  • kubernetes/apps/observability/idrac-exporter/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cpufreq/kantai1/helmrelease.yaml
  • kubernetes/apps/default/open-webui/app/helmrelease.yaml
  • kubernetes/apps/observability/beszel/app/helmrelease.yaml
  • kubernetes/apps/tailscale/tailscale-operator/app/helmrelease.yaml
  • kubernetes/apps/default/immich/frame/helmrelease.yaml
  • kubernetes/apps/default/pvforecast/app/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml
  • kubernetes/apps/default/docker-registry-ui/app/helmrelease.yaml
  • kubernetes/apps/kube-system/reloader/app/helmrelease.yaml
  • kubernetes/apps/external-secrets/external-secrets/app/helmrelease.yaml
  • kubernetes/apps/observability/netronome/app/helmrelease.yaml
  • kubernetes/apps/observability/blackbox-exporter/app/helmrelease.yaml
  • kubernetes/apps/default/memos/app/helmrelease.yaml
  • kubernetes/apps/default/glance/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai1-samba/app/helmrelease.yaml
  • kubernetes/apps/observability/kube-prometheus-stack/app/helmrelease.yaml
  • kubernetes/apps/default/karakeep/app/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs/app/helmrelease.yaml
  • kubernetes/apps/observability/pulse/app/helmrelease.yaml
  • kubernetes/apps/default/shelfmark/app/helmrelease.yaml
  • kubernetes/apps/default/ollama/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/operator/app/helmrelease.yaml
  • kubernetes/apps/network/envoy-gateway/app/helmrelease.yaml
  • kubernetes/apps/kube-system/zfs-static-csi/app/helmrelease.yaml
  • kubernetes/apps/default/pocket-id/app/helmrelease.yaml
  • kubernetes/apps/observability/kite/app/helmrelease.yaml
  • kubernetes/apps/talos-admin/tuppr/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/gpt/helmrelease.yaml
  • kubernetes/apps/observability-agents/node-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/dozzle/app/helmrelease.yaml
  • kubernetes/apps/default/qui/app/helmrelease.yaml
  • kubernetes/apps/default/seerr/app/helmrelease.yaml
  • kubernetes/apps/kube-system/spegel/app/helmrelease.yaml
  • kubernetes/apps/observability/headlamp/app/helmrelease.yaml
  • kubernetes/apps/kube-system/snapshot-controller/app/helmrelease.yaml
  • kubernetes/apps/default/qbittorrent/app/helmrelease.yaml
  • kubernetes/apps/default/mealie/app/helmrelease.yaml
  • kubernetes/apps/kube-system/metrics-server/app/helmrelease.yaml
  • kubernetes/apps/default/grimmory/app/helmrelease.yaml
  • kubernetes/apps/default/immich/valkey/helmrelease.yaml
  • kubernetes/apps/default/hypermind/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/fluent-bit/app/helmrelease.yaml
  • kubernetes/apps/kube-system/multus/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/app/helmrelease.yaml
  • kubernetes/apps/default/dawarich/app/helmrelease.yaml
  • kubernetes/apps/observability/silence-operator/app/helmrelease.yaml
  • kubernetes/apps/default/spoolman/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/zfs/helmrelease.yaml
  • kubernetes/apps/observability-agents/smartctl-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/grafana/operator/helmrelease.yaml
  • kubernetes/apps/default/changedetection/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/ai/helmrelease.yaml
  • kubernetes/apps/observability/victoria/operator-crds/helmrelease.yaml
  • kubernetes/apps/observability/alloy/alloy/helmrelease.yaml
  • kubernetes/apps/default/autobrr/app/helmrelease.yaml
  • kubernetes/apps/network/cloudflared/app/helmrelease.yaml
  • kubernetes/apps/observability/gatus/app/helmrelease.yaml
  • kubernetes/apps/default/homebox/app/helmrelease.yaml
  • kubernetes/apps/default/tracearr/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai3-samba/app/helmrelease.yaml
  • kubernetes/apps/default/recyclarr/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/metadata-relay/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/powerwall/helmrelease.yaml
  • kubernetes/apps/nvidia-dra-driver-gpu/nvidia-dra-driver-gpu/app/helmrelease.yaml
  • kubernetes/apps/kube-system/csi-driver-smb/app/helmrelease.yaml
  • kubernetes/apps/observability/prometheus-operator-crds/app/helmrelease.yaml
  • kubernetes/apps/observability/unpoller/app/helmrelease.yaml
  • kubernetes/apps/default/sonarr/app/helmrelease.yaml
  • kubernetes/apps/default/openspoolman/app/helmrelease.yaml
  • kubernetes/apps/default/pgadmin/app/helmrelease.yaml
  • kubernetes/apps/default/komga/app/helmrelease.yaml
  • kubernetes/apps/default/plex/app/helmrelease.yaml
  • kubernetes/apps/default/stash/app/helmrelease.yaml
  • kubernetes/apps/network/k8s-gateway/tailscale-dns/helmrelease.yaml
  • kubernetes/apps/network/echo/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cilium/app/helmrelease.yaml
  • kubernetes/apps/default/radarr/app/helmrelease.yaml
  • kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml
  • kubernetes/apps/default/jellyfin/app/helmrelease.yaml
  • kubernetes/apps/keep-system/keep/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/app/helmrelease.yaml
  • kubernetes/apps/default/miniflux/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/app/helmrelease.yaml
  • kubernetes/apps/default/sabnzbd/app/helmrelease.yaml
  • kubernetes/apps/flux-system/operator/ks/helmrelease.yaml
  • kubernetes/apps/kube-system/coredns/app/helmrelease.yaml
  • kubernetes/apps/default/registry/app/helmrelease.yaml
  • kubernetes/apps/default/immich/app/helmrelease.yaml
  • kubernetes/apps/default/homepage/app/helmrelease.yaml
  • kubernetes/apps/observability/speedtest-exporter/app/helmrelease.yaml
  • kubernetes/apps/cert-manager/cert-manager/app/helmrelease.yaml

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 14, 2026

--- kubernetes/apps/database/influxdb/app Kustomization: database/influxdb HelmRelease: database/influxdb

+++ kubernetes/apps/database/influxdb/app Kustomization: database/influxdb HelmRelease: database/influxdb

@@ -13,19 +13,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       influxdb:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/crd-schema-publisher/app Kustomization: default/crd-schema-publisher HelmRelease: default/crd-schema-publisher

+++ kubernetes/apps/default/crd-schema-publisher/app Kustomization: default/crd-schema-publisher HelmRelease: default/crd-schema-publisher

@@ -11,19 +11,24 @@

   chartRef:
     kind: OCIRepository
     name: crd-schema-publisher
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     grafana:
       dashboard:
         operator:
           allowCrossNamespaceImport: true
           datasources:
--- kubernetes/apps/default/gluetun/app Kustomization: default/gluetun-update HelmRelease: default/gluetun-update

+++ kubernetes/apps/default/gluetun/app Kustomization: default/gluetun-update HelmRelease: default/gluetun-update

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       gluetun-update:
         containers:
           gluetun-update:
             args:
--- kubernetes/apps/default/buildkit/app Kustomization: default/buildkit HelmRelease: default/buildkit

+++ kubernetes/apps/default/buildkit/app Kustomization: default/buildkit HelmRelease: default/buildkit

@@ -9,20 +9,27 @@

   namespace: default
 spec:
   chartRef:
     kind: OCIRepository
     name: app-template
     namespace: flux-system
+  driftDetection:
+    mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       amd64:
         containers:
           buildkitd:
             args:
--- kubernetes/apps/default/docker-registry-ui/app Kustomization: default/docker-registry-ui HelmRelease: default/docker-registry-ui

+++ kubernetes/apps/default/docker-registry-ui/app Kustomization: default/docker-registry-ui HelmRelease: default/docker-registry-ui

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       docker-registry-ui:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/homebox/app Kustomization: default/homebox HelmRelease: default/homebox

+++ kubernetes/apps/default/homebox/app Kustomization: default/homebox HelmRelease: default/homebox

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       homebox:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/immich/frame Kustomization: default/immichframe HelmRelease: default/immichframe

+++ kubernetes/apps/default/immich/frame Kustomization: default/immichframe HelmRelease: default/immichframe

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       immichframe:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/komga/app Kustomization: default/komga HelmRelease: default/komga

+++ kubernetes/apps/default/komga/app Kustomization: default/komga HelmRelease: default/komga

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       komga:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/mealie/app Kustomization: default/mealie HelmRelease: default/mealie

+++ kubernetes/apps/default/mealie/app Kustomization: default/mealie HelmRelease: default/mealie

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       mealie:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/immich/valkey Kustomization: default/immich-valkey HelmRelease: default/immich-valkey

+++ kubernetes/apps/default/immich/valkey Kustomization: default/immich-valkey HelmRelease: default/immich-valkey

@@ -13,19 +13,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       valkey:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/homepage/app Kustomization: default/homepage HelmRelease: default/homepage

+++ kubernetes/apps/default/homepage/app Kustomization: default/homepage HelmRelease: default/homepage

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       homepage:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/karakeep/app Kustomization: default/karakeep HelmRelease: default/karakeep

+++ kubernetes/apps/default/karakeep/app Kustomization: default/karakeep HelmRelease: default/karakeep

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       browserless:
         containers:
           browserless:
             env:
--- kubernetes/apps/default/changedetection/app Kustomization: default/changedetection HelmRelease: default/changedetection

+++ kubernetes/apps/default/changedetection/app Kustomization: default/changedetection HelmRelease: default/changedetection

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       changedetection:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/grimmory/app Kustomization: default/grimmory HelmRelease: default/grimmory

+++ kubernetes/apps/default/grimmory/app Kustomization: default/grimmory HelmRelease: default/grimmory

@@ -13,19 +13,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       grimmory:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/immich/app Kustomization: default/immich HelmRelease: default/immich

+++ kubernetes/apps/default/immich/app Kustomization: default/immich HelmRelease: default/immich

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       machine-learning:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/dawarich/app Kustomization: default/dawarich HelmRelease: default/dawarich

+++ kubernetes/apps/default/dawarich/app Kustomization: default/dawarich HelmRelease: default/dawarich

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     configMaps:
       dawarich-initdb:
         data:
           dawarich.sql: |
             CREATE EXTENSION IF NOT EXISTS "postgis";
--- kubernetes/apps/default/pgadmin/app Kustomization: default/pgadmin HelmRelease: default/pgadmin

+++ kubernetes/apps/default/pgadmin/app Kustomization: default/pgadmin HelmRelease: default/pgadmin

@@ -9,20 +9,27 @@

   namespace: default
 spec:
   chartRef:
     kind: OCIRepository
     name: app-template
     namespace: flux-system
+  driftDetection:
+    mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       pgadmin:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/miniflux/app Kustomization: default/miniflux HelmRelease: default/miniflux

+++ kubernetes/apps/default/miniflux/app Kustomization: default/miniflux HelmRelease: default/miniflux

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       miniflux:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/photon/app Kustomization: default/photon HelmRelease: default/photon

+++ kubernetes/apps/default/photon/app Kustomization: default/photon HelmRelease: default/photon

@@ -12,15 +12,14 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
+    crds: CreateReplace
     disableWait: true
-    remediation:
-      retries: -1
   interval: 1h
   postRenderers:
   - kustomize:
       patches:
       - patch: |
           - op: add
@@ -28,17 +27,23 @@

             value: 7200
         target:
           group: apps
           kind: Deployment
           name: photon
           version: v1
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     disableWait: true
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       photon:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/nextflux/app Kustomization: default/nextflux HelmRelease: default/nextflux

+++ kubernetes/apps/default/nextflux/app Kustomization: default/nextflux HelmRelease: default/nextflux

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       nextflux:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/prowlarr/app Kustomization: default/prowlarr HelmRelease: default/prowlarr

+++ kubernetes/apps/default/prowlarr/app Kustomization: default/prowlarr HelmRelease: default/prowlarr

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       prowlarr:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/recyclarr/app Kustomization: default/recyclarr HelmRelease: default/recyclarr

+++ kubernetes/apps/default/recyclarr/app Kustomization: default/recyclarr HelmRelease: default/recyclarr

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       recyclarr:
         containers:
           recyclarr:
             args:
--- kubernetes/apps/default/spoolman/app Kustomization: default/spoolman HelmRelease: default/spoolman

+++ kubernetes/apps/default/spoolman/app Kustomization: default/spoolman HelmRelease: default/spoolman

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       spoolman:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/shelfmark/app Kustomization: default/shelfmark HelmRelease: default/shelfmark

+++ kubernetes/apps/default/shelfmark/app Kustomization: default/shelfmark HelmRelease: default/shelfmark

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       shelfmark:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/qui/app Kustomization: default/qui HelmRelease: default/qui

+++ kubernetes/apps/default/qui/app Kustomization: default/qui HelmRelease: default/qui

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       qui:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/pocket-id/app Kustomization: default/pocket-id HelmRelease: default/pocket-id

+++ kubernetes/apps/default/pocket-id/app Kustomization: default/pocket-id HelmRelease: default/pocket-id

@@ -9,20 +9,27 @@

   namespace: default
 spec:
   chartRef:
     kind: OCIRepository
     name: app-template
     namespace: flux-system
+  driftDetection:
+    mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       pocket-id:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/registry/app Kustomization: default/registry HelmRelease: default/registry

+++ kubernetes/apps/default/registry/app Kustomization: default/registry HelmRelease: default/registry

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       gc:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/radarr/app Kustomization: default/radarr HelmRelease: default/radarr

+++ kubernetes/apps/default/radarr/app Kustomization: default/radarr HelmRelease: default/radarr

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       radarr:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/plex/app Kustomization: default/plex HelmRelease: default/plex

+++ kubernetes/apps/default/plex/app Kustomization: default/plex HelmRelease: default/plex

@@ -9,20 +9,27 @@

   namespace: default
 spec:
   chartRef:
     kind: OCIRepository
     name: app-template
     namespace: flux-system
+  driftDetection:
+    mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       plex:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/memos/app Kustomization: default/memos HelmRelease: default/memos

+++ kubernetes/apps/default/memos/app Kustomization: default/memos HelmRelease: default/memos

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       memos:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/sabnzbd/app Kustomization: default/sabnzbd HelmRelease: default/sabnzbd

+++ kubernetes/apps/default/sabnzbd/app Kustomization: default/sabnzbd HelmRelease: default/sabnzbd

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       sabnzbd:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/seerr/app Kustomization: default/seerr HelmRelease: default/seerr

+++ kubernetes/apps/default/seerr/app Kustomization: default/seerr HelmRelease: default/seerr

@@ -11,14 +11,13 @@

   chartRef:
     kind: OCIRepository
     name: seerr-chart
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
   postRenderers:
   - kustomize:
       patches:
       - patch: |
           - op: add
@@ -32,16 +31,22 @@

                   - secretRef:
                       name: seerr-initdb
         target:
           group: apps
           kind: StatefulSet
           version: v1
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     config:
       persistence:
         existingClaim: seerr
     extraEnv:
     - name: TZ
--- kubernetes/apps/default/qbittorrent/app Kustomization: default/qbittorrent HelmRelease: default/qbittorrent

+++ kubernetes/apps/default/qbittorrent/app Kustomization: default/qbittorrent HelmRelease: default/qbittorrent

@@ -12,14 +12,13 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
   postRenderers:
   - kustomize:
       patches:
       - patch: |
           - op: add
@@ -27,16 +26,22 @@

             value: true
         target:
           group: apps
           kind: Deployment
           name: qbittorrent
           version: v1
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       qbittorrent:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/default/sonarr/app Kustomization: default/sonarr HelmRelease: default/sonarr

+++ kubernetes/apps/default/sonarr/app Kustomization: default/sonarr HelmRelease: default/sonarr

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       sonarr:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/cnpg-system/cloudnative-pg/app Kustomization: cnpg-system/cloudnative-pg HelmRelease: cnpg-system/cloudnative-pg

+++ kubernetes/apps/cnpg-system/cloudnative-pg/app Kustomization: cnpg-system/cloudnative-pg HelmRelease: cnpg-system/cloudnative-pg

@@ -16,19 +16,24 @@

     - paths:
       - /metadata/annotations/prometheus-operator-validated
       target:
         kind: PrometheusRule
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     monitoring:
       grafanaDashboard:
         create: false
       podMonitorEnabled: true
       podMonitorMetricRelabelings:
--- kubernetes/apps/flux-system/operator/ks Kustomization: flux-system/flux-operator HelmRelease: flux-system/flux-operator

+++ kubernetes/apps/flux-system/operator/ks Kustomization: flux-system/flux-operator HelmRelease: flux-system/flux-operator

@@ -9,24 +9,29 @@

   namespace: flux-system
 spec:
   chartRef:
     kind: OCIRepository
     name: flux-operator
     namespace: flux-system
+  driftDetection:
+    mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
   releaseName: flux-operator
+  rollback:
+    cleanupOnFail: true
   timeout: 5m
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     resources:
       limits: null
     serviceMonitor:
       create: true
     tolerations:
--- kubernetes/apps/kube-system/kubelet-csr-approver/app Kustomization: kube-system/kubelet-csr-approver HelmRelease: kube-system/kubelet-csr-approver

+++ kubernetes/apps/kube-system/kubelet-csr-approver/app Kustomization: kube-system/kubelet-csr-approver HelmRelease: kube-system/kubelet-csr-approver

@@ -11,19 +11,24 @@

   chartRef:
     kind: OCIRepository
     name: kubelet-csr-approver
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     metrics:
       enable: true
       serviceMonitor:
         enabled: true
   valuesFrom:
--- kubernetes/apps/default/tracearr/app Kustomization: default/tracearr HelmRelease: default/tracearr

+++ kubernetes/apps/default/tracearr/app Kustomization: default/tracearr HelmRelease: default/tracearr

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     configMaps:
       tracearr-initdb:
         data:
           tracearr.sql: |
             CREATE EXTENSION IF NOT EXISTS "timescaledb";
--- kubernetes/apps/kube-system/multus/app Kustomization: kube-system/multus HelmRelease: kube-system/multus

+++ kubernetes/apps/kube-system/multus/app Kustomization: kube-system/multus HelmRelease: kube-system/multus

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       multus:
         containers:
           multus:
             args:
--- kubernetes/apps/kube-system/generic-device-plugin/app Kustomization: kube-system/generic-device-plugin HelmRelease: kube-system/generic-device-plugin

+++ kubernetes/apps/kube-system/generic-device-plugin/app Kustomization: kube-system/generic-device-plugin HelmRelease: kube-system/generic-device-plugin

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       generic-device-plugin:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/kube-system/csi-driver-smb/app Kustomization: kube-system/csi-driver-smb HelmRelease: kube-system/csi-driver-smb

+++ kubernetes/apps/kube-system/csi-driver-smb/app Kustomization: kube-system/csi-driver-smb HelmRelease: kube-system/csi-driver-smb

@@ -11,14 +11,19 @@

   chartRef:
     kind: OCIRepository
     name: csi-driver-smb
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
 
--- kubernetes/apps/kube-system/zfs-static-csi/app Kustomization: kube-system/zfs-static-csi HelmRelease: kube-system/zfs-static-csi

+++ kubernetes/apps/kube-system/zfs-static-csi/app Kustomization: kube-system/zfs-static-csi HelmRelease: kube-system/zfs-static-csi

@@ -11,19 +11,24 @@

   chartRef:
     kind: OCIRepository
     name: zfs-static-csi
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
--- kubernetes/apps/kube-system/cpufreq/kantai1 Kustomization: kube-system/cpufreq-kantai1 HelmRelease: kube-system/cpufreq-kantai1

+++ kubernetes/apps/kube-system/cpufreq/kantai1 Kustomization: kube-system/cpufreq-kantai1 HelmRelease: kube-system/cpufreq-kantai1

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       cpufreq:
         containers:
           cpufreq:
             command:
--- kubernetes/apps/kube-system/descheduler/app Kustomization: kube-system/descheduler HelmRelease: kube-system/descheduler

+++ kubernetes/apps/kube-system/descheduler/app Kustomization: kube-system/descheduler HelmRelease: kube-system/descheduler

@@ -11,19 +11,24 @@

   chartRef:
     kind: OCIRepository
     name: descheduler
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     cmdOptions:
       v: 4
     deschedulerPolicy:
       profiles:
       - name: default
--- kubernetes/apps/kube-system/metrics-server/app Kustomization: kube-system/metrics-server HelmRelease: kube-system/metrics-server

+++ kubernetes/apps/kube-system/metrics-server/app Kustomization: kube-system/metrics-server HelmRelease: kube-system/metrics-server

@@ -11,19 +11,24 @@

   chartRef:
     kind: OCIRepository
     name: metrics-server
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     args:
     - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
     - --kubelet-use-node-status-port
     - --metric-resolution=15s
     metrics:
--- kubernetes/apps/kube-system/reloader/app Kustomization: kube-system/reloader HelmRelease: kube-system/reloader

+++ kubernetes/apps/kube-system/reloader/app Kustomization: kube-system/reloader HelmRelease: kube-system/reloader

@@ -11,19 +11,24 @@

   chartRef:
     kind: OCIRepository
     name: stakater
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     fullnameOverride: reloader
     reloader:
       deployment:
         containerSecurityContext:
           allowPrivilegeEscalation: false
--- kubernetes/apps/kube-system/node-feature-discovery/app Kustomization: kube-system/node-feature-discovery HelmRelease: kube-system/node-feature-discovery

+++ kubernetes/apps/kube-system/node-feature-discovery/app Kustomization: kube-system/node-feature-discovery HelmRelease: kube-system/node-feature-discovery

@@ -12,20 +12,23 @@

     kind: OCIRepository
     name: node-feature-discovery
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     gc:
       tolerations:
       - effect: NoSchedule
         key: node-role.kubernetes.io/control-plane
         operator: Equal
--- kubernetes/apps/default/stash/app Kustomization: default/stash HelmRelease: default/stash

+++ kubernetes/apps/default/stash/app Kustomization: default/stash HelmRelease: default/stash

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     configMaps:
       dockerenv:
         data:
           dockerenv: ''
       sais-initdb:
--- kubernetes/apps/kube-system/spegel/app Kustomization: kube-system/spegel HelmRelease: kube-system/spegel

+++ kubernetes/apps/kube-system/spegel/app Kustomization: kube-system/spegel HelmRelease: kube-system/spegel

@@ -11,19 +11,24 @@

   chartRef:
     kind: OCIRepository
     name: spegel
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     grafanaDashboard:
       enabled: false
     service:
       registry:
         hostPort: 29999
--- kubernetes/apps/gpu-operator/gpu-operator/app Kustomization: gpu-operator/gpu-operator HelmRelease: gpu-operator/gpu-operator

+++ kubernetes/apps/gpu-operator/gpu-operator/app Kustomization: gpu-operator/gpu-operator HelmRelease: gpu-operator/gpu-operator

@@ -18,14 +18,12 @@

       version: v25.10.0
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
     disableOpenAPIValidation: true
-    remediation:
-      retries: 3
   interval: 1h
   postRenderers:
   - kustomize:
       patches:
       - patch: |-
           apiVersion: apps/v1
@@ -46,18 +44,23 @@

                       runAsNonRoot: true
                       runAsUser: 1000
                       runAsGroup: 1000
                 securityContext:
                   fsGroup: 1000
                   fsGroupChangePolicy: OnRootMismatch
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     disableOpenAPIValidation: true
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     cdi:
       enabled: true
     dcgmExporter:
       env:
       - name: KUBERNETES_VIRTUAL_GPUS
--- kubernetes/apps/flux-system/instance/ks Kustomization: flux-system/flux-instance HelmRelease: flux-system/flux-instance

+++ kubernetes/apps/flux-system/instance/ks Kustomization: flux-system/flux-instance HelmRelease: flux-system/flux-instance

@@ -8,11 +8,25 @@

   name: flux-instance
   namespace: flux-system
 spec:
   chartRef:
     kind: OCIRepository
     name: flux-instance
+  driftDetection:
+    mode: enabled
+  install:
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
+  upgrade:
+    cleanupOnFail: true
+    crds: CreateReplace
+    remediation:
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   valuesFrom:
   - kind: ConfigMap
     name: flux-helm-values-cfbm9d26tb
 
--- kubernetes/apps/network/echo/app Kustomization: network/echo HelmRelease: network/echo

+++ kubernetes/apps/network/echo/app Kustomization: network/echo HelmRelease: network/echo

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       echo:
         containers:
           echo:
             env:
--- kubernetes/apps/network/k8s-gateway/tailscale-dns Kustomization: network/tailscale-dns HelmRelease: network/tailscale-dns

+++ kubernetes/apps/network/k8s-gateway/tailscale-dns Kustomization: network/tailscale-dns HelmRelease: network/tailscale-dns

@@ -12,20 +12,23 @@

     kind: OCIRepository
     name: k8s-gateway
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     domain: kantai.xyz
     service:
       ipFamily: IPv4
       ipFamilyPolicy: SingleStack
       loadBalancerClass: tailscale
--- kubernetes/apps/network/external-dns/unifi Kustomization: network/external-dns-unifi HelmRelease: network/external-dns-unifi

+++ kubernetes/apps/network/external-dns/unifi Kustomization: network/external-dns-unifi HelmRelease: network/external-dns-unifi

@@ -13,21 +13,24 @@

     name: external-dns
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
     disableSchemaValidation: true
-    remediation:
-      retries: 3
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     disableSchemaValidation: true
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     domainFilters:
     - kantai.xyz
     - internal
     extraArgs:
     - --gateway-name=envoy-internal
--- kubernetes/apps/network/external-dns/cloudflare Kustomization: network/external-dns-cloudflare HelmRelease: network/external-dns-cloudflare

+++ kubernetes/apps/network/external-dns/cloudflare Kustomization: network/external-dns-cloudflare HelmRelease: network/external-dns-cloudflare

@@ -13,21 +13,24 @@

     name: external-dns
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
     disableSchemaValidation: true
-    remediation:
-      retries: 3
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     disableSchemaValidation: true
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     domainFilters:
     - kantai.xyz
     env:
     - name: CF_API_TOKEN
       valueFrom:
--- kubernetes/apps/network/openspeedtest/app Kustomization: network/openspeedtest HelmRelease: network/openspeedtest

+++ kubernetes/apps/network/openspeedtest/app Kustomization: network/openspeedtest HelmRelease: network/openspeedtest

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       openspeedtest:
         containers:
           openspeedtest:
             image:
--- kubernetes/apps/observability/dozzle/app Kustomization: observability/dozzle HelmRelease: observability/dozzle

+++ kubernetes/apps/observability/dozzle/app Kustomization: observability/dozzle HelmRelease: observability/dozzle

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       dozzle:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/observability/grafana/operator Kustomization: observability/grafana-operator HelmRelease: observability/grafana-operator

+++ kubernetes/apps/observability/grafana/operator Kustomization: observability/grafana-operator HelmRelease: observability/grafana-operator

@@ -12,20 +12,23 @@

     kind: OCIRepository
     name: grafana-operator
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     dashboard:
       enabled: true
     serviceMonitor:
       enabled: true
 
--- kubernetes/apps/observability/kite/app Kustomization: observability/kite HelmRelease: observability/kite

+++ kubernetes/apps/observability/kite/app Kustomization: observability/kite HelmRelease: observability/kite

@@ -11,14 +11,13 @@

   chartRef:
     kind: OCIRepository
     name: kite-chart
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
   postRenderers:
   - kustomize:
       patches:
       - patch: |
           - op: add
@@ -33,16 +32,22 @@

                       name: kite-initdb
         target:
           group: apps
           kind: Deployment
           name: kite
           version: v1
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     config:
       enabled: true
       existingSecret: kite-config
     db:
       type: postgres
--- kubernetes/apps/observability/blackbox-exporter/app Kustomization: observability/blackbox-exporter HelmRelease: observability/blackbox-exporter

+++ kubernetes/apps/observability/blackbox-exporter/app Kustomization: observability/blackbox-exporter HelmRelease: observability/blackbox-exporter

@@ -12,19 +12,23 @@

     kind: OCIRepository
     name: blackbox-exporter
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
+    cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     config:
       modules:
         http_2xx:
           http:
             follow_redirects: true
--- kubernetes/apps/observability/beszel/app Kustomization: observability/beszel HelmRelease: observability/beszel

+++ kubernetes/apps/observability/beszel/app Kustomization: observability/beszel HelmRelease: observability/beszel

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       beszel:
         containers:
           beszel:
             env:
--- kubernetes/apps/observability/netronome/app Kustomization: observability/netronome HelmRelease: observability/netronome

+++ kubernetes/apps/observability/netronome/app Kustomization: observability/netronome HelmRelease: observability/netronome

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     configMaps:
       dockerenv:
         data:
           dockerenv: ''
         suffix: dockerenv
--- kubernetes/apps/observability/gatus/app Kustomization: observability/gatus HelmRelease: observability/gatus

+++ kubernetes/apps/observability/gatus/app Kustomization: observability/gatus HelmRelease: observability/gatus

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       gatus:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/network/envoy-gateway/app Kustomization: network/envoy-gateway HelmRelease: network/envoy-gateway

+++ kubernetes/apps/network/envoy-gateway/app Kustomization: network/envoy-gateway HelmRelease: network/envoy-gateway

@@ -12,20 +12,23 @@

     kind: OCIRepository
     name: envoy-gateway
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     certgen:
       job:
         tolerations:
         - effect: NoSchedule
           key: node-role.kubernetes.io/control-plane
--- kubernetes/apps/observability/nut-exporter/app Kustomization: observability/nut-exporter HelmRelease: observability/nut-exporter

+++ kubernetes/apps/observability/nut-exporter/app Kustomization: observability/nut-exporter HelmRelease: observability/nut-exporter

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       nut-exporter:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/observability/prometheus-operator-crds/app Kustomization: observability/prometheus-operator-crds HelmRelease: observability/prometheus-operator-crds

+++ kubernetes/apps/observability/prometheus-operator-crds/app Kustomization: observability/prometheus-operator-crds HelmRelease: observability/prometheus-operator-crds

@@ -9,18 +9,21 @@

   namespace: observability
 spec:
   chartRef:
     kind: OCIRepository
     name: prometheus-operator-crds
   driftDetection:
-    mode: disabled
+    mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
 
--- kubernetes/apps/observability/scrutiny/app Kustomization: observability/scrutiny HelmRelease: observability/scrutiny

+++ kubernetes/apps/observability/scrutiny/app Kustomization: observability/scrutiny HelmRelease: observability/scrutiny

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       scrutiny:
         annotations:
           reloader.stakater.com/auto: 'true'
         containers:
--- kubernetes/apps/observability/silence-operator/app Kustomization: observability/silence-operator HelmRelease: observability/silence-operator

+++ kubernetes/apps/observability/silence-operator/app Kustomization: observability/silence-operator HelmRelease: observability/silence-operator

@@ -8,19 +8,26 @@

   name: silence-operator
   namespace: observability
 spec:
   chartRef:
     kind: OCIRepository
     name: silence-operator
+  driftDetection:
+    mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     alertmanagerAddress: http://vmalertmanager-kantai.observability.svc.cluster.local:9093
     networkPolicy:
       enabled: false
 
--- kubernetes/apps/observability/siren/app Kustomization: observability/siren HelmRelease: observability/siren

+++ kubernetes/apps/observability/siren/app Kustomization: observability/siren HelmRelease: observability/siren

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     controllers:
       siren:
         containers:
           siren:
             env:
--- kubernetes/apps/observability/speedtest-exporter/app Kustomization: observability/speedtest-exporter HelmRelease: observability/speedtest-exporter

+++ kubernetes/apps/observability/speedtest-exporter/app Kustomization: observability/speedtest-exporter HelmRelease: observability/speedtest-exporter

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     configMaps:
       config:
         data:
           config.yaml: |
             cache: "24h"
--- kubernetes/apps/observability/victoria/operator-crds Kustomization: observability/victoria-operator-crds HelmRelease: observability/victoria-metrics-operator-crds

+++ kubernetes/apps/observability/victoria/operator-crds Kustomization: observability/victoria-operator-crds HelmRelease: observability/victoria-metrics-operator-crds

@@ -12,15 +12,18 @@

     kind: OCIRepository
     name: victoria-metrics-operator-crds
   driftDetection:
     mode: enabled
   install:
     crds: CreateReplace
-    remediation:
-      retries: -1
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
     crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
 
--- kubernetes/apps/observability-agents/smartctl-exporter/app Kustomization: observability-agents/smartctl-exporter HelmRelease: observability-agents/smartctl-exporter

+++ kubernetes/apps/observability-agents/smartctl-exporter/app Kustomization: observability-agents/smartctl-exporter HelmRelease: observability-agents/smartctl-exporter

@@ -16,19 +16,24 @@

     - paths:
       - /metadata/annotations/prometheus-operator-validated
       target:
         kind: PrometheusRule
     mode: enabled
   install:
-    remediation:
-      retries: -1
+    crds: CreateReplace
   interval: 1h
+  rollback:
+    cleanupOnFail: true
   upgrade:
     cleanupOnFail: true
+    crds: CreateReplace
     remediation:
-      retries: 3
+      remediateLastFailure: true
+      retries: 2
+    strategy:
+      name: RemediateOnFailure
   values:
     fullnameOverride: smartctl-exporter
     image:
       repository: ghcr.io/home-operations/smartctl-exporter
       tag: 0.14.0@sha256:773d462bb82db3195b050fbe71b08caf62fe0ad6b4abfb63a4b8306f5bb7516a
     prometheusRules:
--- kubernetes/apps/observability-agents/telegraf/powerwall Kustomization: observability-agents/telegraf-powerwall HelmRelease: observability-agents/telegraf-powerwall

+++ kubernetes/apps/observability-agents/telegraf/powerwall Kustomization: observability-agents/telegraf-powerwall HelmRelease: observability-agents/telegraf-powerwall

@@ -12,19 +12,24 @@

     kind: OCIRepository
     name: app-template
     namespace: flux-system
   driftDetection:
     mode: enabled
   

This message was truncated. Download full message

@jfroy jfroy force-pushed the cleanup-hr branch 3 times, most recently from 9cdf55f to 3a200cc Compare May 15, 2026 04:03
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@kubernetes/cluster/ks.yaml`:
- Around line 35-36: The HelmRelease default patch is missing the install
remediation setting; update the install block (the same block that currently
contains crds: CreateReplace) to include remediation.retries: -1 so that
install.remediation.retries is set to -1 (e.g., add an install.remediation: {
retries: -1 } entry alongside crds) to enable the repo-standard infinite retry
behavior on first-time install failures.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 77376d36-34fe-4168-b7d4-3429d8bf85ab

📥 Commits

Reviewing files that changed from the base of the PR and between 5ff3c7b and 9cdf55f.

📒 Files selected for processing (118)
  • kubernetes/apps/cert-manager/cert-manager/app/helmrelease.yaml
  • kubernetes/apps/cert-manager/trust-manager/app/helmrelease.yaml
  • kubernetes/apps/cnpg-system/cloudnative-pg/app/helmrelease.yaml
  • kubernetes/apps/database/influxdb/app/helmrelease.yaml
  • kubernetes/apps/default/autobrr/app/helmrelease.yaml
  • kubernetes/apps/default/buildkit/app/helmrelease.yaml
  • kubernetes/apps/default/changedetection/app/helmrelease.yaml
  • kubernetes/apps/default/crd-schema-publisher/app/helmrelease.yaml
  • kubernetes/apps/default/dawarich/app/helmrelease.yaml
  • kubernetes/apps/default/docker-registry-ui/app/helmrelease.yaml
  • kubernetes/apps/default/docling/app/helmrelease.yaml
  • kubernetes/apps/default/glance/app/helmrelease.yaml
  • kubernetes/apps/default/gluetun/app/helmrelease.yaml
  • kubernetes/apps/default/grimmory/app/helmrelease.yaml
  • kubernetes/apps/default/homebox/app/helmrelease.yaml
  • kubernetes/apps/default/homepage/app/helmrelease.yaml
  • kubernetes/apps/default/hypermind/app/helmrelease.yaml
  • kubernetes/apps/default/immich/app/helmrelease.yaml
  • kubernetes/apps/default/immich/frame/helmrelease.yaml
  • kubernetes/apps/default/immich/valkey/helmrelease.yaml
  • kubernetes/apps/default/jellyfin/app/helmrelease.yaml
  • kubernetes/apps/default/karakeep/app/helmrelease.yaml
  • kubernetes/apps/default/komga/app/helmrelease.yaml
  • kubernetes/apps/default/mealie/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/metadata-relay/helmrelease.yaml
  • kubernetes/apps/default/memos/app/helmrelease.yaml
  • kubernetes/apps/default/miniflux/app/helmrelease.yaml
  • kubernetes/apps/default/nextflux/app/helmrelease.yaml
  • kubernetes/apps/default/octoeverywhere-bambu-connect/app/helmrelease.yaml
  • kubernetes/apps/default/ollama/app/helmrelease.yaml
  • kubernetes/apps/default/open-webui/app/helmrelease.yaml
  • kubernetes/apps/default/openspoolman/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/ai/helmrelease.yaml
  • kubernetes/apps/default/paperless/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/gpt/helmrelease.yaml
  • kubernetes/apps/default/pgadmin/app/helmrelease.yaml
  • kubernetes/apps/default/photon/app/helmrelease.yaml
  • kubernetes/apps/default/plex/app/helmrelease.yaml
  • kubernetes/apps/default/pocket-id/app/helmrelease.yaml
  • kubernetes/apps/default/prowlarr/app/helmrelease.yaml
  • kubernetes/apps/default/pvforecast/app/helmrelease.yaml
  • kubernetes/apps/default/qbittorrent/app/helmrelease.yaml
  • kubernetes/apps/default/qui/app/helmrelease.yaml
  • kubernetes/apps/default/radarr/app/helmrelease.yaml
  • kubernetes/apps/default/recyclarr/app/helmrelease.yaml
  • kubernetes/apps/default/registry/app/helmrelease.yaml
  • kubernetes/apps/default/sabnzbd/app/helmrelease.yaml
  • kubernetes/apps/default/seerr/app/helmrelease.yaml
  • kubernetes/apps/default/shelfmark/app/helmrelease.yaml
  • kubernetes/apps/default/sonarr/app/helmrelease.yaml
  • kubernetes/apps/default/spoolman/app/helmrelease.yaml
  • kubernetes/apps/default/stash/app/helmrelease.yaml
  • kubernetes/apps/default/tracearr/app/helmrelease.yaml
  • kubernetes/apps/external-secrets/external-secrets/app/helmrelease.yaml
  • kubernetes/apps/flux-system/operator/ks/helmrelease.yaml
  • kubernetes/apps/gpu-operator/gpu-operator/app/helmrelease.yaml
  • kubernetes/apps/keep-system/keep/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cilium/app/helmrelease.yaml
  • kubernetes/apps/kube-system/coredns/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cpufreq/kantai1/helmrelease.yaml
  • kubernetes/apps/kube-system/csi-driver-smb/app/helmrelease.yaml
  • kubernetes/apps/kube-system/descheduler/app/helmrelease.yaml
  • kubernetes/apps/kube-system/generic-device-plugin/app/helmrelease.yaml
  • kubernetes/apps/kube-system/kubelet-csr-approver/app/helmrelease.yaml
  • kubernetes/apps/kube-system/metrics-server/app/helmrelease.yaml
  • kubernetes/apps/kube-system/multus/app/helmrelease.yaml
  • kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml
  • kubernetes/apps/kube-system/reloader/app/helmrelease.yaml
  • kubernetes/apps/kube-system/snapshot-controller/app/helmrelease.yaml
  • kubernetes/apps/kube-system/spegel/app/helmrelease.yaml
  • kubernetes/apps/kube-system/zfs-static-csi/app/helmrelease.yaml
  • kubernetes/apps/network/cloudflared/app/helmrelease.yaml
  • kubernetes/apps/network/echo/app/helmrelease.yaml
  • kubernetes/apps/network/envoy-gateway/app/helmrelease.yaml
  • kubernetes/apps/network/external-dns/cloudflare/helmrelease.yaml
  • kubernetes/apps/network/external-dns/unifi/helmrelease.yaml
  • kubernetes/apps/network/k8s-gateway/tailscale-dns/helmrelease.yaml
  • kubernetes/apps/network/openspeedtest/app/helmrelease.yaml
  • kubernetes/apps/nvidia-dra-driver-gpu/nvidia-dra-driver-gpu/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/fluent-bit/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/node-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/zfs/helmrelease.yaml
  • kubernetes/apps/observability-agents/smartctl-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/powerwall/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/zfs/helmrelease.yaml
  • kubernetes/apps/observability/alloy/alloy/helmrelease.yaml
  • kubernetes/apps/observability/beszel/app/helmrelease.yaml
  • kubernetes/apps/observability/blackbox-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/dozzle/app/helmrelease.yaml
  • kubernetes/apps/observability/gatus/app/helmrelease.yaml
  • kubernetes/apps/observability/grafana/operator/helmrelease.yaml
  • kubernetes/apps/observability/headlamp/app/helmrelease.yaml
  • kubernetes/apps/observability/idrac-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/kite/app/helmrelease.yaml
  • kubernetes/apps/observability/kube-prometheus-stack/app/helmrelease.yaml
  • kubernetes/apps/observability/netronome/app/helmrelease.yaml
  • kubernetes/apps/observability/nut-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/prometheus-operator-crds/app/helmrelease.yaml
  • kubernetes/apps/observability/pulse/app/helmrelease.yaml
  • kubernetes/apps/observability/scrutiny/app/helmrelease.yaml
  • kubernetes/apps/observability/silence-operator/app/helmrelease.yaml
  • kubernetes/apps/observability/siren/app/helmrelease.yaml
  • kubernetes/apps/observability/speedtest-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/unpoller/app/helmrelease.yaml
  • kubernetes/apps/observability/victoria/operator-crds/helmrelease.yaml
  • kubernetes/apps/observability/victoria/operator/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/cluster/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/operator/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai1-samba/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai3-samba/app/helmrelease.yaml
  • kubernetes/apps/tailscale/tailscale-operator/app/helmrelease.yaml
  • kubernetes/apps/talos-admin/tuppr/app/helmrelease.yaml
  • kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml
  • kubernetes/cluster/ks.yaml
💤 Files with no reviewable changes (115)
  • kubernetes/apps/default/buildkit/app/helmrelease.yaml
  • kubernetes/apps/network/external-dns/cloudflare/helmrelease.yaml
  • kubernetes/apps/kube-system/descheduler/app/helmrelease.yaml
  • kubernetes/apps/default/changedetection/app/helmrelease.yaml
  • kubernetes/apps/rook-ceph/operator/app/helmrelease.yaml
  • kubernetes/apps/kube-system/multus/app/helmrelease.yaml
  • kubernetes/apps/default/mealie/app/helmrelease.yaml
  • kubernetes/apps/database/influxdb/app/helmrelease.yaml
  • kubernetes/apps/observability/nut-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/idrac-exporter/app/helmrelease.yaml
  • kubernetes/apps/default/ollama/app/helmrelease.yaml
  • kubernetes/apps/default/qui/app/helmrelease.yaml
  • kubernetes/apps/default/karakeep/app/helmrelease.yaml
  • kubernetes/apps/network/envoy-gateway/app/helmrelease.yaml
  • kubernetes/apps/default/pgadmin/app/helmrelease.yaml
  • kubernetes/apps/default/crd-schema-publisher/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/app/helmrelease.yaml
  • kubernetes/apps/default/komga/app/helmrelease.yaml
  • kubernetes/apps/network/openspeedtest/app/helmrelease.yaml
  • kubernetes/apps/nvidia-dra-driver-gpu/nvidia-dra-driver-gpu/app/helmrelease.yaml
  • kubernetes/apps/default/nextflux/app/helmrelease.yaml
  • kubernetes/apps/default/sabnzbd/app/helmrelease.yaml
  • kubernetes/apps/default/seerr/app/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs-localpv/app/helmrelease.yaml
  • kubernetes/apps/default/plex/app/helmrelease.yaml
  • kubernetes/apps/default/autobrr/app/helmrelease.yaml
  • kubernetes/apps/default/gluetun/app/helmrelease.yaml
  • kubernetes/apps/kube-system/coredns/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/metadata-relay/helmrelease.yaml
  • kubernetes/apps/default/pocket-id/app/helmrelease.yaml
  • kubernetes/apps/kube-system/node-feature-discovery/app/helmrelease.yaml
  • kubernetes/apps/observability/speedtest-exporter/app/helmrelease.yaml
  • kubernetes/apps/cert-manager/cert-manager/app/helmrelease.yaml
  • kubernetes/apps/flux-system/operator/ks/helmrelease.yaml
  • kubernetes/apps/default/hypermind/app/helmrelease.yaml
  • kubernetes/apps/default/dawarich/app/helmrelease.yaml
  • kubernetes/apps/kube-system/generic-device-plugin/app/helmrelease.yaml
  • kubernetes/apps/default/recyclarr/app/helmrelease.yaml
  • kubernetes/apps/default/docling/app/helmrelease.yaml
  • kubernetes/apps/observability/gatus/app/helmrelease.yaml
  • kubernetes/apps/default/pvforecast/app/helmrelease.yaml
  • kubernetes/apps/default/homebox/app/helmrelease.yaml
  • kubernetes/apps/observability/beszel/app/helmrelease.yaml
  • kubernetes/apps/kube-system/zfs-static-csi/app/helmrelease.yaml
  • kubernetes/apps/default/docker-registry-ui/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai1-samba/app/helmrelease.yaml
  • kubernetes/apps/default/openspoolman/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/node-exporter/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/gpt/helmrelease.yaml
  • kubernetes/apps/default/memos/app/helmrelease.yaml
  • kubernetes/apps/default/miniflux/app/helmrelease.yaml
  • kubernetes/apps/network/echo/app/helmrelease.yaml
  • kubernetes/apps/observability/alloy/alloy/helmrelease.yaml
  • kubernetes/apps/external-secrets/external-secrets/app/helmrelease.yaml
  • kubernetes/apps/default/glance/app/helmrelease.yaml
  • kubernetes/apps/gpu-operator/gpu-operator/app/helmrelease.yaml
  • kubernetes/apps/default/photon/app/helmrelease.yaml
  • kubernetes/apps/kube-system/kubelet-csr-approver/app/helmrelease.yaml
  • kubernetes/apps/cert-manager/trust-manager/app/helmrelease.yaml
  • kubernetes/apps/observability/kite/app/helmrelease.yaml
  • kubernetes/apps/kube-system/snapshot-controller/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/app/helmrelease.yaml
  • kubernetes/apps/default/qbittorrent/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/powerwall/helmrelease.yaml
  • kubernetes/apps/network/k8s-gateway/tailscale-dns/helmrelease.yaml
  • kubernetes/apps/observability/unpoller/app/helmrelease.yaml
  • kubernetes/apps/observability/siren/app/helmrelease.yaml
  • kubernetes/apps/cnpg-system/cloudnative-pg/app/helmrelease.yaml
  • kubernetes/apps/kube-system/reloader/app/helmrelease.yaml
  • kubernetes/apps/default/mediamanager/app/helmrelease.yaml
  • kubernetes/apps/default/sonarr/app/helmrelease.yaml
  • kubernetes/apps/observability/blackbox-exporter/app/helmrelease.yaml
  • kubernetes/apps/network/external-dns/unifi/helmrelease.yaml
  • kubernetes/apps/default/stash/app/helmrelease.yaml
  • kubernetes/apps/observability/netronome/app/helmrelease.yaml
  • kubernetes/apps/kube-system/spegel/app/helmrelease.yaml
  • kubernetes/apps/default/registry/app/helmrelease.yaml
  • kubernetes/apps/default/prowlarr/app/helmrelease.yaml
  • kubernetes/apps/default/radarr/app/helmrelease.yaml
  • kubernetes/apps/default/paperless/ai/helmrelease.yaml
  • kubernetes/apps/kube-system/metrics-server/app/helmrelease.yaml
  • kubernetes/apps/storage/kantai3-samba/app/helmrelease.yaml
  • kubernetes/apps/default/homepage/app/helmrelease.yaml
  • kubernetes/apps/default/immich/app/helmrelease.yaml
  • kubernetes/apps/default/octoeverywhere-bambu-connect/app/helmrelease.yaml
  • kubernetes/apps/kube-system/csi-driver-smb/app/helmrelease.yaml
  • kubernetes/apps/keep-system/keep/app/helmrelease.yaml
  • kubernetes/apps/network/cloudflared/app/helmrelease.yaml
  • kubernetes/apps/observability/dozzle/app/helmrelease.yaml
  • kubernetes/apps/default/spoolman/app/helmrelease.yaml
  • kubernetes/apps/default/open-webui/app/helmrelease.yaml
  • kubernetes/apps/volsync-system/volsync/app/helmrelease.yaml
  • kubernetes/apps/tailscale/tailscale-operator/app/helmrelease.yaml
  • kubernetes/apps/default/shelfmark/app/helmrelease.yaml
  • kubernetes/apps/kube-system/cpufreq/kantai1/helmrelease.yaml
  • kubernetes/apps/kube-system/cilium/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/scrutiny-collector/zfs/helmrelease.yaml
  • kubernetes/apps/openebs-system/openebs/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/fluent-bit/app/helmrelease.yaml
  • kubernetes/apps/default/tracearr/app/helmrelease.yaml
  • kubernetes/apps/default/immich/valkey/helmrelease.yaml
  • kubernetes/apps/default/grimmory/app/helmrelease.yaml
  • kubernetes/apps/observability/scrutiny/app/helmrelease.yaml
  • kubernetes/apps/default/jellyfin/app/helmrelease.yaml
  • kubernetes/apps/default/immich/frame/helmrelease.yaml
  • kubernetes/apps/observability/victoria/operator-crds/helmrelease.yaml
  • kubernetes/apps/observability-agents/telegraf/zfs/helmrelease.yaml
  • kubernetes/apps/observability/pulse/app/helmrelease.yaml
  • kubernetes/apps/talos-admin/tuppr/app/helmrelease.yaml
  • kubernetes/apps/observability/headlamp/app/helmrelease.yaml
  • kubernetes/apps/observability-agents/smartctl-exporter/app/helmrelease.yaml
  • kubernetes/apps/observability/kube-prometheus-stack/app/helmrelease.yaml
  • kubernetes/apps/observability/grafana/operator/helmrelease.yaml
  • kubernetes/apps/observability/prometheus-operator-crds/app/helmrelease.yaml
  • kubernetes/apps/observability/silence-operator/app/helmrelease.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • kubernetes/apps/rook-ceph/cluster/app/helmrelease.yaml

Comment on lines +35 to +36
install:
crds: CreateReplace
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

# First, let's find and examine the file
find . -path "*kubernetes/cluster/ks.yaml" -type f

Repository: jfroy/flatops

Length of output: 86


🏁 Script executed:

# Check the content around lines 35-36
head -50 kubernetes/cluster/ks.yaml | cat -n

Repository: jfroy/flatops

Length of output: 1967


🏁 Script executed:

# Get full context of the file structure
wc -l kubernetes/cluster/ks.yaml

Repository: jfroy/flatops

Length of output: 87


Add install remediation to the default HelmRelease boilerplate.

The cluster-wide defaults patch omits install.remediation.retries: -1, so first-time install failures will not get the repo-standard retry behavior.

Proposed fix
                  install:
                    crds: CreateReplace
+                   remediation:
+                     retries: -1
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
install:
crds: CreateReplace
install:
crds: CreateReplace
remediation:
retries: -1
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kubernetes/cluster/ks.yaml` around lines 35 - 36, The HelmRelease default
patch is missing the install remediation setting; update the install block (the
same block that currently contains crds: CreateReplace) to include
remediation.retries: -1 so that install.remediation.retries is set to -1 (e.g.,
add an install.remediation: { retries: -1 } entry alongside crds) to enable the
repo-standard infinite retry behavior on first-time install failures.

@jfroy jfroy merged commit 0c79088 into main May 15, 2026
7 checks passed
@jfroy jfroy deleted the cleanup-hr branch May 15, 2026 04:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant